iptablesは、Linuxに実装されたパケットフィルタリングおよびネットワークアドレス変換 (NAT) 機能であるNetfilter(複数のNetfilterモジュールとして実装されている)の設定を操作するコマンドのこと。
Netfilterは、いわゆるファイアウォールやルータとしての役割を果たします。IPv4 用の実装が iptables で、IPv6 用の実装が ip6tables です。
iptables と ip6tables は Linux カーネルの IPv4/IPv6 パケットフィルタルールのテーブルの設定・管理・検査に使用されます。
このINPUT、OUTPUT、FORWARDという3つの経路に対して、それぞれ通過させるパケットのルールを設定します。この3つの経路を「チェイン」と呼びます。
チェインには、これら以外に、PREROUTING,POSTROUTINGがあります。それ以外にユーザー定義のチェインを加えることもできます。
これらはそれぞれ基本ポリシーです。どのルールにも当てはまらない場合、これらが適用されます。
policy DROPとなっているのは他のルールが指定されていない場合には、すべて拒否するという意味です。ACCEPTとしてある場合、全て許可します。
複数の異なるテーブルを定義できます。 各テーブルには数個の組み込みチェインがあり、 さらにユーザー定義のチェインを加えることもできます。
各チェインは、パケット群にマッチするルールのリストです。 各ルールはマッチしたパケットに対する処理を規定します。 パケットに対する処理は「ターゲット」と呼ばれ、 同じテーブル内のユーザー定義チェインにジャンプすることもできます。
ファイアウォールのルールでは、 パケットのマッチ条件とターゲットを指定します。 パケットがマッチしない場合、 チェイン内の次に設定されているルールが評価される。 パケットがマッチした場合、 ターゲットの値によって以下のルールが指定されます。 ターゲットの値には、 ユーザー定義チェインの名前、 iptables-extensions(8) に説明があるターゲットのいずれか、 もしくは特別な値 ACCEPT, DROP, RETURN のいずれかを指定します。
組み込みチェインの最後に到達した場合、 または組み込みチェインでターゲット RETURN を持つルールにマッチした場合、 パケットをどのように処理するかは、そのチェインのポリシーで指定されたターゲットにより決まります。
現在のところ 5 つの独立なテーブルが存在する (ある時点でどのテーブルが存在するかは、 カーネルの設定やどういったモジュールが存在するかに依存する)。
-t, --table テーブル
このコマンドで操作するパケットマッチングテーブルを指定する。 カーネルで自動モジュールローディングが有効になっている場合、 そのテーブルで必要となるモジュールがまだロードされていなければ、 ロードされる。
以下のテーブルがある。
iptables [オプション] チェーン [パラメータ] [ターゲット] |
|
-A | 指定チェインの最後に新しいルールを追加する |
-D | 指定チェインから1つ以上のルールを削除する |
-P | 指定チェインのポリシーを指定したターゲットに設定する |
-L | 現在の crontab ファイルを削除する。(全ての設定が削除される) |
-N | 新しいユーザー定義チェインを作成する |
-X | 指定したユーザー定義チェインを削除する。(全ての設定が削除される) |
-I | ルール番号を指定してルールを挿入する |
-F | 指定されたチェーンの全ての設定を削除する |
INPUT | 自ホストに入ってくるパケット |
OUTPUT | ローカルマシンで生成されたパケット |
FORWARD | 自ホストを経由するパケット |
PREROUTING | 入ってきたパケットを変換 |
POSTROUTING | 出ていくパケットを変換 |
-p プロトコル | プロトコル(tcp、udp、icmp、all)を指定 |
-s IPアドレス[/mask] | 送信元のアドレス。IPアドレスorホスト名を記述 |
-d IPアドレス[/mask] | 送信先のアドレス。IPアドレスorホスト名を記述 |
--sport ポート番号 | 送信元のアドレス。IPアドレスorホスト名を記述 |
-dport ポート番号 | 送信先のアドレス。IPアドレスorホスト名を記述 |
-i インターフェイス名 | パケットが入ってくるインターフェイスを指定 |
-o インターフェイス名 | パケットが出ていくインターフェイスを指定 |
-j ターゲット | 条件に合ったときのアクションを指定 |
-t テーブル | テーブルを指定 |
-m state --state | パケットの状態を条件として指定。stateは、 NEW、ESTABLISHED、RELATED、INVALIDが指定できる |
! | -p、-s、-dなどで、条件を反転(~以外となる) |
--to IPアドレス:ポート番号 | 宛先を指定 |
ACCEPT | パケットの通過を許可 |
DROP | パケットを破棄 |
MASQUERADE | 送信元IPアドレスとポート番号の変換 |
SNAT | 送信元のIPアドレスの変換 |
DNAT | 送信先のIPアドレスの変換 |
LOG | ログを取る |
REJECT | パケットを拒否し、ICMPメッセージを返信(送信元に通知) |
REDIRECT | 特定ポートにリダイレクト |
www.it-shikaku.jp
[Top] | |
[講義目次] | |
[2.11:ファイル共有サービス] | |
[2.12:システムのセキュリティ] | |
[2.12.1 iptables や firewalld によるパケットフィルタリング] | |
[2.12.2 OpenSSH サーバーの設定と管理] | |
[2.12.3 OpenVPNの設定と管理] | |
[2.12.4 セキュリティ業務] | |
[2.13:システムアーキテクチャ] | |
[講義検索] | |
[リンク集] |